#ifndef __DRV_ENUM_H__
#define __DRV_ENUM_H__

#include "sal_types.h"
enum drv_constant_e
{
    DRV_IPFIX_EXPORTREASON_NO_EXPORT                  ,
    DRV_IPFIX_EXPORTREASON_EXPIRED                    ,
    DRV_IPFIX_EXPORTREASON_TCP_SESSION_CLOSE          ,
    DRV_IPFIX_EXPORTREASON_PACKET_COUNT_OVERFLOW      ,
    DRV_IPFIX_EXPORTREASON_BYTE_COUNT_OVERFLOW        ,
    DRV_IPFIX_EXPORTREASON_NEW_FLOW_EXPORT            ,
    DRV_IPFIX_EXPORTREASON_DESTINATION_CHANGE         ,
    DRV_IPFIX_EXPORTREASON_TS_COUNT_OVERFLOW          ,
    DRV_IPFIX_EXPORTREASON_JITTER_OVERFLOW            ,
    DRV_IPFIX_EXPORTREASON_LATENCY_OVERFLOW           ,
    DRV_IPFIX_EXPORTREASON_TTL_CHANGE                 ,
    DRV_IPFIX_EXPORTREASON_DROP_PKT_COUNT_OVERFLOW    ,
    DRV_IPFIX_EXPORTREASON_PACKET_DISCARDTYPE_CHANGE  ,
    DRV_IPFIX_EXPORTREASON_FLUSH_TIMER_EXPORT         ,
    DRV_IPFIX_EXPORTREASON_SESSION_PACKET_DROP        ,
    DRV_IPFIX_EXPORTREASON_RTP_SEQID_DISORDER         ,
    DRV_IPFIX_EXPORTREASON_BUFFER_DROP                ,
    DRV_IPFIX_EXPORTREASON_QUEUE_BURST                ,
    DRV_IPFIX_EXPORTREASON_BURST_EVENT                ,
    DRV_IPFIX_EXPORTREASON_LATENCY_EVENT              ,
    DRV_IPFIX_EXPORTREASON_HASH_CONFLICT_EXPORT       ,

    DRV_DS_CATEGORY_ID_PAIR_TCAM_LOOKUP_KEY_BYTES,
    DRV_TCAMKEYTYPE_MACKEY_160,
    DRV_TCAMKEYTYPE_L3KEY_160,
    DRV_TCAMKEYTYPE_L3KEY_320,
    DRV_TCAMKEYTYPE_IPV6KEY_320,
    DRV_TCAMKEYTYPE_IPV6KEY_640,
    DRV_TCAMKEYTYPE_MACL3KEY_320,
    DRV_TCAMKEYTYPE_MACL3KEY_640,
    DRV_TCAMKEYTYPE_MACIPV6KEY_640,
    DRV_TCAMKEYTYPE_CIDKEY_160,
    DRV_TCAMKEYTYPE_SHORTKEY_80,
    DRV_TCAMKEYTYPE_FORWARDKEY_320,
    DRV_TCAMKEYTYPE_FORWARDKEY_640,
    DRV_TCAMKEYTYPE_COPPKEY_320,
    DRV_TCAMKEYTYPE_COPPKEY_640,
    DRV_TCAMKEYTYPE_UDFKEY_320,

    DRV_SCL_KEY_TYPE_L2KEY,
    DRV_SCL_KEY_TYPE_L3KEY,
    DRV_SCL_KEY_TYPE_L2L3KEY,
    /**< [TM] D2 Use the key type from port, while TM use the key type from scl */
    DRV_SCL_KEY_TYPE_MACKEY160,
    DRV_SCL_KEY_TYPE_MACL3KEY320,
    DRV_SCL_KEY_TYPE_L3KEY160,
    DRV_SCL_KEY_TYPE_IPV6KEY320,
    DRV_SCL_KEY_TYPE_MACIPV6KEY640,
    DRV_SCL_KEY_TYPE_RESOLVE_CONFLICT,
    DRV_SCL_KEY_TYPE_UDFKEY160,
    DRV_SCL_KEY_TYPE_UDFKEY320,
    DRV_SCL_KEY_TYPE_UDFKEY640,
    DRV_SCL_KEY_TYPE_MASK,

    DRV_UDFPOSTYPE_NONE,
    DRV_UDFPOSTYPE_OUTER_L2,
    DRV_UDFPOSTYPE_OUTER_L3,
    DRV_UDFPOSTYPE_OUTER_L4,
    DRV_UDFPOSTYPE_INNER_L2,
    DRV_UDFPOSTYPE_INNER_L3,
    DRV_UDFPOSTYPE_INNER_L4,
    DRV_UDFPOSTYPE_RSV,

    DRV_STK_MUX_TYPE_HDR_REGULAR_PORT,
    DRV_STK_MUX_TYPE_HDR_WITHOUT_TUNNEL,
    DRV_STK_MUX_TYPE_HDR_WITH_L2,
    DRV_STK_MUX_TYPE_HDR_WITH_L2_AND_IPV4,
    DRV_STK_MUX_TYPE_HDR_WITH_L2_AND_IPV6,
    DRV_STK_MUX_TYPE_HDR_WITH_IPV4,
    DRV_STK_MUX_TYPE_HDR_WITH_IPV6,

    DRV_DMA_PACKET_TX_CHAN_NUM,
    DRV_DMA_PACKET_RX_CHAN_NUM,
    DRV_DMA_PACKET_RX0_CHAN_ID,
    DRV_DMA_PACKET_RX1_CHAN_ID,
    DRV_DMA_PACKET_RX2_CHAN_ID,
    DRV_DMA_PACKET_RX3_CHAN_ID,
    DRV_DMA_PACKET_RX4_CHAN_ID,
    DRV_DMA_PACKET_RX5_CHAN_ID,
    DRV_DMA_PACKET_RX6_CHAN_ID,
    DRV_DMA_PACKET_RX7_CHAN_ID,
    DRV_DMA_PACKET_TX0_CHAN_ID,
    DRV_DMA_PACKET_TX1_CHAN_ID,
    DRV_DMA_PACKET_TX2_CHAN_ID,
    DRV_DMA_PACKET_TX3_CHAN_ID,
    DRV_DMA_TBL_RD_CHAN_ID,
    DRV_DMA_PORT_STATS_CHAN_ID,
    DRV_DMA_FLOW_STATS_CHAN_ID,
    DRV_DMA_REG_MAX_CHAN_ID,
    DRV_DMA_TBL_RD1_CHAN_ID,
    DRV_DMA_TBL_RD2_CHAN_ID,
    DRV_DMA_TBL_WR_CHAN_ID,
    DRV_DMA_TBL_WR1_CHAN_ID,
    DRV_DMA_LEARNING_CHAN_ID,
    DRV_DMA_HASHKEY_CHAN_ID,
    DRV_DMA_IPFIX_CHAN_ID,
    DRV_DMA_SDC_CHAN_ID,
    DRV_DMA_MONITOR_CHAN_ID,
    DRV_DMA_BUFFER_CHAN_ID,
    DRV_DMA_BUF_SCAN_CHAN_ID,
    DRV_DMA_LATENCY_CHAN_ID,
    DRV_DMA_EFD_CHAN_ID,
    DRV_DMA_OAM_CHAN_ID,
    DRV_DMA_SC_OAM_CHAN_ID,
    DRV_DMA_TCAM_SCAN_CHAN_ID,
    DRV_DMA_BATCH_CHAN_ID,
    DRV_DMA_MAX_CHAN_ID,
    DRV_DMA_TCAM_SCAN_DESC_NUM,
    DRV_DMA_PKT_TX_TIMER_CHAN_ID,

    DRV_FLOWPORTTYPE_BITMAP,
    DRV_FLOWPORTTYPE_GPORT,
    DRV_FLOWPORTTYPE_LPORT,
    DRV_FLOWPORTTYPE_METADATA,

    DRV_FIBNATPBRTCAMKEYTYPE_IPV4PBR,
    DRV_FIBNATPBRTCAMKEYTYPE_IPV6PBR,
    DRV_FIBNATPBRTCAMKEYTYPE_IPV4NAT,
    DRV_FIBNATPBRTCAMKEYTYPE_IPV6NAT,

    DRV_UDFTYPE_L2UDF,
    DRV_UDFTYPE_L3UDF,
    DRV_UDFTYPE_L4UDF,
    DRV_UDFTYPE_METADATA,

    DRV_VLANIDACTIONTYPE_NONE,
    DRV_VLANIDACTIONTYPE_SWAP,
    DRV_VLANIDACTIONTYPE_USER,

    DRV_VTAGACTIONTYPE_NONE,
    DRV_VTAGACTIONTYPE_MODIFY,
    DRV_VTAGACTIONTYPE_ADD,
    DRV_VTAGACTIONTYPE_DELETE,

    DRV_EGRESSXCOAMHASHTYPE_DISABLE ,
    DRV_EGRESSXCOAMHASHTYPE_DOUBLEVLANPORT,
    DRV_EGRESSXCOAMHASHTYPE_SVLANPORT,
    DRV_EGRESSXCOAMHASHTYPE_CVLANPORT,
    DRV_EGRESSXCOAMHASHTYPE_SVLANCOSPORT,
    DRV_EGRESSXCOAMHASHTYPE_CVLANCOSPORT,
    DRV_EGRESSXCOAMHASHTYPE_PORTVLANCROSS,
    DRV_EGRESSXCOAMHASHTYPE_PORTCROSS,
    DRV_EGRESSXCOAMHASHTYPE_PORT,
    DRV_EGRESSXCOAMHASHTYPE_SVLANPORTMAC,
    DRV_EGRESSXCOAMHASHTYPE_TUNNELPBB,
    DRV_EGRESSXCOAMHASHTYPE_ETH,
    DRV_EGRESSXCOAMHASHTYPE_BFD,
    DRV_EGRESSXCOAMHASHTYPE_MPLSLABEL,
    DRV_EGRESSXCOAMHASHTYPE_MPLSSECTION,
    DRV_EGRESSXCOAMHASHTYPE_RMEP,
    DRV_EGRESSSCLHASHTYPE_FIDDVPGROUP,
    DRV_EGRESSSCLHASHTYPE_METADATADVPGROUP,
    DRV_EGRESSSCLHASHTYPE_VPPAIR,
    DRV_EGRESSSCLHASHTYPE_I2ECIDDVPGROUP,

    DRV_FIBHOST0PRIMARYHASHTYPE_FCOE,
    DRV_FIBHOST0PRIMARYHASHTYPE_IPV4,
    DRV_FIBHOST0PRIMARYHASHTYPE_IPV6MCAST,
    DRV_FIBHOST0PRIMARYHASHTYPE_IPV6UCAST,
    DRV_FIBHOST0PRIMARYHASHTYPE_MAC,
    DRV_FIBHOST0PRIMARYHASHTYPE_MACIPV6MCAST,
    DRV_FIBHOST0PRIMARYHASHTYPE_TRILL,
    DRV_FIBHOST0PRIMARYHASHTYPE_MACIPV4MCAST,

    DRV_FIBHOST1PRIMARYHASHTYPE_IPV4,
    DRV_FIBHOST1PRIMARYHASHTYPE_IPV6NATDA,
    DRV_FIBHOST1PRIMARYHASHTYPE_IPV6NATSA,
    DRV_FIBHOST1PRIMARYHASHTYPE_OTHER,

    DRV_FLOWHASHTYPE_INVALID,
    DRV_FLOWHASHTYPE_L2,
    DRV_FLOWHASHTYPE_L2L3,
    DRV_FLOWHASHTYPE_L3IPV4,
    DRV_FLOWHASHTYPE_L3IPV6,
    DRV_FLOWHASHTYPE_L3MPLS,
    DRV_FLOWHASHTYPE_NSH,

    DRV_GEMHASHTYPE_PORT,

    DRV_IPFIXHASHTYPE_INVALID,
    DRV_IPFIXHASHTYPE_L2,
    DRV_IPFIXHASHTYPE_L2L3,
    DRV_IPFIXHASHTYPE_L3IPV4,
    DRV_IPFIXHASHTYPE_L3IPV6,
    DRV_IPFIXHASHTYPE_L3MPLS,
    DRV_IPFIXHASHTYPE_L3IPV4SHORT,
    DRV_IPFIXHASHTYPE_L3IPV6SHORT,
    DRV_IPFIXHASHTYPE_UDFSHORT,
    DRV_IPFIXHASHTYPE_UDF,
    DRV_IPFIXHASHTYPE_NSH,
    DRV_IPFIXHASHTYPE_NSHSHORT,

    DRV_MPLSHASHTYPE_LABEL,

    DRV_OAMHASHTYPE_ETH,
    DRV_OAMHASHTYPE_BFD,
    DRV_OAMHASHTYPE_MPLSLABEL,
    DRV_OAMHASHTYPE_MPLSSECTION,
    DRV_OAMHASHTYPE_RMEP,

    DRV_USERIDHASHTYPE_DISABLE,
    DRV_USERIDHASHTYPE_DOUBLEVLANPORT,
    DRV_USERIDHASHTYPE_SVLANPORT,
    DRV_USERIDHASHTYPE_CVLANPORT,
    DRV_USERIDHASHTYPE_SVLANCOSPORT,
    DRV_USERIDHASHTYPE_CVLANCOSPORT,
    DRV_USERIDHASHTYPE_MACPORT,
    DRV_USERIDHASHTYPE_IPV4PORT,
    DRV_USERIDHASHTYPE_MAC,
    DRV_USERIDHASHTYPE_IPV4SA,
    DRV_USERIDHASHTYPE_PORT,
    DRV_USERIDHASHTYPE_SVLANMACSA,
    DRV_USERIDHASHTYPE_SVLAN,
    DRV_USERIDHASHTYPE_ECIDNAMESPACE,
    DRV_USERIDHASHTYPE_INGECIDNAMESPACE,
    DRV_USERIDHASHTYPE_IPV6SA,
    DRV_USERIDHASHTYPE_IPV6PORT,
    DRV_USERIDHASHTYPE_IPV4DA,
    DRV_USERIDHASHTYPE_IPV6DA,
    DRV_USERIDHASHTYPE_NSH,
    DRV_USERIDHASHTYPE_VLANDSCPPORT,
    DRV_USERIDHASHTYPE_CAPWAPSTASTATUS,
    DRV_USERIDHASHTYPE_CAPWAPSTASTATUSMC,
    DRV_USERIDHASHTYPE_CAPWAPMACDAFORWARD,
    DRV_USERIDHASHTYPE_CAPWAPVLANFORWARD,
    DRV_USERIDHASHTYPE_TUNNELIPV4,
    DRV_USERIDHASHTYPE_TUNNELIPV4GREKEY,
    DRV_USERIDHASHTYPE_TUNNELIPV4UDP,
    DRV_USERIDHASHTYPE_TUNNELPBB,
    DRV_USERIDHASHTYPE_TUNNELTRILLUCRPF,
    DRV_USERIDHASHTYPE_TUNNELTRILLUCDECAP,
    DRV_USERIDHASHTYPE_TUNNELTRILLMCRPF,
    DRV_USERIDHASHTYPE_TUNNELTRILLMCDECAP,
    DRV_USERIDHASHTYPE_TUNNELTRILLMCADJ,
    DRV_USERIDHASHTYPE_TUNNELIPV4RPF,
    DRV_USERIDHASHTYPE_TUNNELIPV4UCVXLANMODE0,
    DRV_USERIDHASHTYPE_TUNNELIPV4UCVXLANMODE1,
    DRV_USERIDHASHTYPE_TUNNELIPV6UCVXLANMODE0,
    DRV_USERIDHASHTYPE_TUNNELIPV6UCVXLANMODE1,
    DRV_USERIDHASHTYPE_TUNNELIPV4UCNVGREMODE0,
    DRV_USERIDHASHTYPE_TUNNELIPV4UCNVGREMODE1,
    DRV_USERIDHASHTYPE_TUNNELIPV6UCNVGREMODE0,
    DRV_USERIDHASHTYPE_TUNNELIPV6UCNVGREMODE1,
    DRV_USERIDHASHTYPE_TUNNELIPV4MCVXLANMODE0,
    DRV_USERIDHASHTYPE_TUNNELIPV4VXLANMODE1,
    DRV_USERIDHASHTYPE_TUNNELIPV6MCVXLANMODE0,
    DRV_USERIDHASHTYPE_TUNNELIPV6MCVXLANMODE1,
    DRV_USERIDHASHTYPE_TUNNELIPV4MCNVGREMODE0,
    DRV_USERIDHASHTYPE_TUNNELIPV4NVGREMODE1,
    DRV_USERIDHASHTYPE_TUNNELIPV6MCNVGREMODE0,
    DRV_USERIDHASHTYPE_TUNNELIPV6MCNVGREMODE1,
    DRV_USERIDHASHTYPE_TUNNELIPV4CAPWAP,
    DRV_USERIDHASHTYPE_TUNNELIPV6CAPWAP,
    DRV_USERIDHASHTYPE_TUNNELCAPWAPRMAC,
    DRV_USERIDHASHTYPE_TUNNELCAPWAPRMACRID,
    /*Duet2 USERIDHASHTYPE_TUNNELIPV4DA,*/

    DRV_USERIDHASHTYPE_TUNNELMPLS,
    /*Duet2 USERIDHASHTYPE_SCLFLOWL2,*/


    DRV_USERIDHASHTYPE_TUNNELIPV6,
    DRV_USERIDHASHTYPE_TUNNELIPV6GREKEY,
    DRV_USERIDHASHTYPE_TUNNELIPV6UDP,
    DRV_USERIDHASHTYPE_TUNNELIPV6DA,
    DRV_USERIDHASHTYPE_TUNNELIPV4DA,
    DRV_USERIDHASHTYPE_TUNNELIPV4CLOUDSEC,
    DRV_USERIDHASHTYPE_TUNNELIPV6CLOUDSEC,
    DRV_USERIDHASHTYPE_SCLFLOWL2,
    DRV_USERIDHASHTYPE_SCLFLOWL2UDF,
    DRV_USERIDHASHTYPE_SCLFLOWL3UDF,

    DRV_USERIDPORTHASHTYPE_DISABLE,
    DRV_USERIDPORTHASHTYPE_DOUBLEVLANPORT,
    DRV_USERIDPORTHASHTYPE_SVLANPORT,
    DRV_USERIDPORTHASHTYPE_CVLANPORT,
    DRV_USERIDPORTHASHTYPE_SVLANCOSPORT,
    DRV_USERIDPORTHASHTYPE_CVLANCOSPORT,
    DRV_USERIDPORTHASHTYPE_MACPORT,
    DRV_USERIDPORTHASHTYPE_IPSAPORT,
    DRV_USERIDPORTHASHTYPE_MAC,
    DRV_USERIDPORTHASHTYPE_IPSA,
    DRV_USERIDPORTHASHTYPE_PORT,
    DRV_USERIDPORTHASHTYPE_IPDA,
    DRV_USERIDPORTHASHTYPE_SVLANMACSA,
    DRV_USERIDPORTHASHTYPE_SVLAN,
    DRV_USERIDPORTHASHTYPE_ECIDNAMESPACE,
    DRV_USERIDPORTHASHTYPE_INGECIDNAMESPACE,
    DRV_USERIDPORTHASHTYPE_SVLANDSCPPORT,
    DRV_USERIDPORTHASHTYPE_NSH,
    DRV_USERIDPORTHASHTYPE_SCLTYPE_END,
    DRV_USERIDHASHTYPE_SCLFLOWTYPE_END,
    DRV_USERIDHASHTYPE_TUNNELTYPE_START,
    DRV_USERIDHASHTYPE_TUNNELTYPE_END,
    DRV_USERIDPORTHASHTYPE_TUNNEL,
    DRV_USERIDPORTHASHTYPE_SCLFLOW,
    DRV_USERIDPORTHASHTYPE_TRILL,

    DRV_FIBHOST0HASHTYPE_FCOE,
    DRV_FIBHOST0HASHTYPE_IPV4,
    DRV_FIBHOST0HASHTYPE_IPV6MCAST,
    DRV_FIBHOST0HASHTYPE_IPV6UCAST,
    DRV_FIBHOST0HASHTYPE_MAC,
    DRV_FIBHOST0HASHTYPE_MACIPV6MCAST,
    DRV_FIBHOST0HASHTYPE_TRILL,

    DRV_FIBHOST1HASHTYPE_FCOERPF,
    DRV_FIBHOST1HASHTYPE_IPV4MCAST,
    DRV_FIBHOST1HASHTYPE_IPV4NATDAPORT,
    DRV_FIBHOST1HASHTYPE_IPV4NATSAPORT,
    DRV_FIBHOST1HASHTYPE_IPV6MCAST,
    DRV_FIBHOST1HASHTYPE_IPV6NATDAPORT,
    DRV_FIBHOST1HASHTYPE_IPV6NATSAPORT,
    DRV_FIBHOST1HASHTYPE_MACIPV4MCAST,
    DRV_FIBHOST1HASHTYPE_MACIPV6MCAST,
    DRV_FIBHOST1HASHTYPE_TRILLMCASTVLAN,

    DRV_FIB_HOST0_CAM_NUM,
    DRV_FIB_HOST1_CAM_NUM,
    DRV_FLOW_HASH_CAM_NUM,
    DRV_USER_ID_HASH_CAM_NUM,
    DRV_MPLS_HASH_CAM_NUM,
    DRV_XC_OAM_HASH_CAM_NUM,
    DRV_OAM_HASH_CAM_NUM,
    DRV_RMEP_HASH_CAM_NUM,
    DRV_GEM_PORT_HASH_CAM_NUM,
    DRV_QUEUE_MAP_HASH_CAM_NUM,
    DRV_DOT1AE_HASH_CAM_NUM,
    DRV_L2EDITTYPE_NONE,
    DRV_L2EDITTYPE_ADDETH1X,
    DRV_L2EDITTYPE_ADDETH2X,
    DRV_L2EDITTYPE_ADDRAW,
    DRV_L2EDITTYPE_AUTOETH1X,
    DRV_L2EDITTYPE_AUTOETH2X,
    DRV_L2EDITTYPE_RWETH1X,
    DRV_L2EDITTYPE_RWETH2X,
    DRV_L2EDITTYPE_GEMPORT,
    DRV_L2EDITTYPE_LOOPBACK,
    DRV_L3EDITTYPE_NONE,
    DRV_L3EDITTYPE_ADDIP4,
    DRV_L3EDITTYPE_ADDIP44X,
    DRV_L3EDITTYPE_ADDIP6,
    DRV_L3EDITTYPE_MPLS1X,
    DRV_L3EDITTYPE_MPLS2X,
    DRV_L3EDITTYPE_MPLS4X,
    DRV_L3EDITTYPE_ADDRAW,
    DRV_L3EDITTYPE_RWIP41X,
    DRV_L3EDITTYPE_RWIP4,
    DRV_L3EDITTYPE_RWIP6,
    DRV_L3EDITTYPE_RWFLEX,
    DRV_L3EDITTYPE_INSFLEX,
    DRV_L3EDITTYPE_DELMPLS,
    DRV_L3EDITTYPE_DELFLEX,
    DRV_L3EDITTYPE_LOOPBACK,
    DRV_L3EDITTYPE_ADDTRILL,
    DRV_L3EDITTYPE_RWIP68X,
    DRV_L3EDITTYPE_ADDIP68X,
    DRV_L3EDITTYPE_RWIP62X,
    DRV_L3EDITTYPE_INSFLEX8X,
    DRV_L3EDITTYPE_RWFLEX2X,
    DRV_L3EDITTYPE_INSFLEX2X,
    DRV_L3EDITTYPE_DELFLEX2X,

    DRV_METENTRYTYPE_LINKLIST,
    DRV_METENTRYTYPE_PORTBMP1X,
    DRV_METENTRYTYPE_PORTBMP2X,
    DRV_METENTRYTYPE_PORTBMP4X,

    DRV_METENTRYSLIMTYPE_LINKLIST,
    DRV_METENTRYSLIMTYPE_LINKLIST_SIMPLE1X,
    DRV_METENTRYSLIMTYPE_LINKLIST_SIMPLE2X,
    DRV_METENTRYSLIMTYPE_TBD3,
    DRV_METENTRYSLIMTYPE_PORTBMP1X,
    DRV_METENTRYSLIMTYPE_PORTBMP2X,
    DRV_METENTRYSLIMTYPE_PORTBMP4X,
    DRV_METENTRYSLIMTYPE_TBD7,

    DRV_NALPM_SRAM_TYPE_V4_32,
    DRV_NALPM_SRAM_TYPE_V6_64,
    DRV_NALPM_SRAM_TYPE_V6_128,

    DRV_MAX_LPM_TCAM_NUM,
    DRV_MAX_NOR_TCAM_NUM,
    DRV_EPE_DISCARD_TYPE_NUM,

    DRV_PARSER_L4_TYPE_UDP,
    DRV_PARSER_L4_TYPE_GRE,
    DRV_PARSER_L4_TYPE_TCP,
    DRV_PARSER_L4_USER_TYPE_UDP_VXLAN,
    DRV_KEY_METADATA_BITS,

    DRV_FLEXEOAMDEFECTTYPE_INVALIDPDU,
    DRV_FLEXEOAMDEFECTTYPE_SETCSLPI,
    DRV_FLEXEOAMDEFECTTYPE_CLEARCSLPI,
    DRV_FLEXEOAMDEFECTTYPE_SETCSLF,
    DRV_FLEXEOAMDEFECTTYPE_CLEARCSLF,
    DRV_FLEXEOAMDEFECTTYPE_SETCSRF,
    DRV_FLEXEOAMDEFECTTYPE_CLEARCSRF,
    DRV_FLEXEOAMDEFECTTYPE_SETDEXC,
    DRV_FLEXEOAMDEFECTTYPE_CLEARDEXC,
    DRV_FLEXEOAMDEFECTTYPE_SETDDEG,
    DRV_FLEXEOAMDEFECTTYPE_CLEARDDEG,
    DRV_FLEXEOAMDEFECTTYPE_APSTRIGGER,
    DRV_FLEXEOAMDEFECTTYPE_SEQCHECKFAIL,
    DRV_FLEXEOAMDEFECTTYPE_SAPICHECKFAIL,
    DRV_FLEXEOAMDEFECTTYPE_SAPICHECKCLEAR,
    DRV_FLEXEOAMDEFECTTYPE_DAPICHECKFAIL,
    DRV_FLEXEOAMDEFECTTYPE_DAPICHECKCLEAR,
    DRV_FLEXEOAMDEFECTTYPE_CSTYPEFAIL,
    DRV_FLEXEOAMDEFECTTYPE_CSTYPEFAILCLEAR,
    DRV_FLEXEOAMDEFECTTYPE_CRCERROR,
    DRV_FLEXEOAMDEFECTTYPE_APSRX,
    DRV_FLEXEOAMDEFECTTYPE_OTHERPDU,
    DRV_FLEXEOAMDEFECTTYPE_BASPERIODCHKFAIL,
    DRV_FLEXEOAMDEFECTTYPE_PDUPROCINCPU,
    DRV_FLEXEOAMDEFECTTYPE_SETRDI,
    DRV_FLEXEOAMDEFECTTYPE_CLEARRDI,
    DRV_FLEXEOAMDEFECTTYPE_FIRSTRXBLOCK,
    DRV_FLEXEOAMDEFECTTYPE_SETDREIEXC,
    DRV_FLEXEOAMDEFECTTYPE_CLEARDREIEXC,
    DRV_FLEXEOAMDEFECTTYPE_SETDREIDEG,
    DRV_FLEXEOAMDEFECTTYPE_CLEARDREIDEG,
    DRV_FLEXEOAMDEFECTTYPE_DLOCRXCLEAR,
    DRV_FLEXEOAMDEFECTTYPE_BASPERIODCHKCLEAR,
    DRV_FLEXEOAMDEFECTTYPE_BASSEQMISMATCHCLEAR,
    DRV_FLEXEOAMDEFECTTYPE_CVSEQMISMATCHCLEAR,
    DRV_FLEXEOAMDEFECTTYPE_CSSEQMISMATCHCLEAR,
    DRV_FLEXEOAMDEFECTTYPE_APSSEQMISMATCHCLEAR,
    DRV_FLEXEOAMDEFECTTYPE__1DMSEQMISMATCHCLEAR,
    DRV_FLEXEOAMDEFECTTYPE_DMMSEQMISMATCHCLEAR,
    DRV_FLEXEOAMDEFECTTYPE_DMRSEQMISMATCHCLEAR,

    DRV_FLEXEOAMUPDATEDEFECTTYPE_INVALID,
    DRV_FLEXEOAMUPDATEDEFECTTYPE_BASLOC,
    DRV_FLEXEOAMUPDATEDEFECTTYPE_SIGNALFAIL,
    DRV_FLEXEOAMUPDATEDEFECTTYPE_SIGNALOK,
    DRV_FLEXEOAMUPDATEDEFECTTYPE_DLOCRXCLEAR,

    DRV_EGRACL_L3K160_SHAREFIELDS_L4PORT_RNG_BMP,
    DRV_EGRACL_L3K160_SHAREFIELDS_DEFAULT,

    DRV_DIAG_MAC_HASH_WIDTH,
    DRV_DIAG_IPV4_HASH_WIDTH,
    DRV_DIAG_MPLS_HASH_WIDTH,
    DRV_DIAG_OAM_MEP_WIDTH,
    DRV_DIAG_APS_WIDTH,
    DRV_DIAG_FLEX_TCAM_WIDTH,
    DRV_DIAG_EDIT_WIDTH,

    DRV_ACCREQ_ADDR_HOST0,
    DRV_ACCREQ_BITOFFSET_HOST0,
    DRV_ACCREQ_ADDR_FIB,
    DRV_ACCREQ_BITOFFSET_FIB,
    DRV_ACCREQ_ADDR_USERID,
    DRV_ACCREQ_BITOFFSET_USERID,
    DRV_ACCREQ_ADDR_EGRESSXCOAM,
    DRV_ACCREQ_BITOFFSET_EGRESSXCOAM,
    DRV_ACCREQ_ADDR_CIDPAIR,
    DRV_ACCREQ_BITOFFSET_CIDPAIRHASH,
    DRV_ACCREQ_ADDR_MPLS,
    DRV_ACCREQ_BITOFFSET_MPLS,
    DRV_ACCREQ_ADDR_GEMPORT,
    DRV_ACCREQ_BITOFFSET_GEMPORT,
    DRV_ACCREQ_ADDR_EGRESSSCL,
    DRV_ACCREQ_BITOFFSET_EGRESSSCL,
    DRV_ACCREQ_ADDR_OAM,
    DRV_ACCREQ_BITOFFSET_OAM,
    DRV_ACCREQ_ADDR_OAMRMEP,
    DRV_ACCREQ_BITOFFSET_OAMRMEP,
    DRV_ACCREQ_ADDR_QUEUEHASH,
    DRV_ACCREQ_BITOFFSET_QUEUEHASH,
    DRV_ACCREQ_ADDR_DOT1AE_TX,
    DRV_ACCREQ_ADDR_DOT1AE_RX,
    DRV_ACCREQ_BITOFFSET_DOT1AE,

    DRV_OAM_MEPTYPE_ETH_CCM_MEP,
    DRV_OAM_MEPTYPE_PBT_CCM_MEP,
    DRV_OAM_MEPTYPE_TRILL_BFD_MEP,
    DRV_OAM_MEPTYPE_FFD_MEP,
    DRV_OAM_MEPTYPE_CV1_MEP,
    DRV_OAM_MEPTYPE_BFD_MEP,
    DRV_OAM_MEPTYPE_ACH_Y1731_MEP,
    DRV_OAM_MEPTYPE_ACH_BFD_MEP,
    DRV_OAM_MEPTYPE_EXT_ETH_CCM_MEP,
    DRV_OAM_MEPTYPE_TWAMP_MEP,
    DRV_OAM_MEPTYPE_EXT_ACH_Y1731_MEP,

    /*DSDESC*/
    DRV_DsDesc_done_f_START_WORD,
    DRV_DsDesc_done_f_START_BIT,
    DRV_DsDesc_done_f_BIT_WIDTH,
    DRV_DsDesc_u1_pkt_sop_f_START_WORD,
    DRV_DsDesc_u1_pkt_sop_f_START_BIT,
    DRV_DsDesc_u1_pkt_sop_f_BIT_WIDTH,
    DRV_DsDesc_u1_pkt_eop_f_START_WORD,
    DRV_DsDesc_u1_pkt_eop_f_START_BIT,
    DRV_DsDesc_u1_pkt_eop_f_BIT_WIDTH,
    DRV_DsDesc_memAddr_f_START_WORD,
    DRV_DsDesc_memAddr_f_START_BIT,
    DRV_DsDesc_memAddr_f_BIT_WIDTH,
    DRV_DsDesc_realSize_f_START_WORD,
    DRV_DsDesc_realSize_f_START_BIT,
    DRV_DsDesc_realSize_f_BIT_WIDTH,
    DRV_DsDesc_cfgSize_f_START_WORD,
    DRV_DsDesc_cfgSize_f_START_BIT,
    DRV_DsDesc_cfgSize_f_BIT_WIDTH,
    DRV_DsDesc_dataStruct_f_START_WORD,
    DRV_DsDesc_dataStruct_f_START_BIT,
    DRV_DsDesc_dataStruct_f_BIT_WIDTH,
    DRV_DsDesc_reserved0_f_START_WORD,
    DRV_DsDesc_reserved0_f_START_BIT,
    DRV_DsDesc_reserved0_f_BIT_WIDTH,
    DRV_DsDesc_error_f_START_WORD,
    DRV_DsDesc_error_f_START_BIT,
    DRV_DsDesc_error_f_BIT_WIDTH,
    DRV_DsDesc_chipAddr_f_START_WORD,
    DRV_DsDesc_chipAddr_f_START_BIT,
    DRV_DsDesc_chipAddr_f_BIT_WIDTH,
    DRV_DsDesc_pause_f_START_WORD,
    DRV_DsDesc_pause_f_START_BIT,
    DRV_DsDesc_pause_f_BIT_WIDTH,
    DRV_DsDesc_cfgSize2_f_START_WORD,
    DRV_DsDesc_cfgSize2_f_START_BIT,
    DRV_DsDesc_cfgSize2_f_BIT_WIDTH,
    DRV_DsDesc_valid_f_START_WORD,
    DRV_DsDesc_valid_f_START_BIT,
    DRV_DsDesc_valid_f_BIT_WIDTH,
    DRV_DsDesc_tsAddr_f_START_WORD,
    DRV_DsDesc_tsAddr_f_START_BIT,
    DRV_DsDesc_tsAddr_f_BIT_WIDTH,

    DRV_HOST0_SINGLE_KEY_BYTE,
    DRV_HOST0_DOUBLE_KEY_BYTE,
    DRV_HOST0_QUAD_KEY_BYTE,
    DRV_DOT1AE_SINGLE_KEY_BYTE,

    DRV_NAT_TCAM_AGING_BASE,
    DRV_MIRROR_INGRESS_L2SPAN_DISCARD,
    DRV_MIRROR_INGRESS_L3SPAN_DISCARD,
    DRV_MIRROR_INGRESS_ACLLOG_PRI_DISCARD,
    DRV_MIRROR_INGRESS_IPFIX_MIRROR_DISCARD,
    DRV_MIRROR_EGRESS_L2SPAN_DISCARD,
    DRV_MIRROR_EGRESS_L3SPAN_DISCARD,
    DRV_MIRROR_EGRESS_ACLLOG_PRI_DISCARD,
    DRV_MIRROR_EGRESS_IPFIX_MIRROR_DISCARD,
    DRV_PKT_PP_ID_WITH_IPE_INFO,
	DRV_LEARN_CACHE_NUM,
    DRV_CONSTANT_MAX
};
typedef enum drv_constant_e drv_constant_t;

#define DRV_CONST(type)     p_drv_master[lchip]->p_enum_value[type]
#define DRV_ENUM(type)      (drv_get_const_value(lchip, type))

#undef DRV_DEF_C
#undef DRV_DEF_M
#undef DRV_DEF_D
#undef DRV_DEF_F

 /*drv_type.h:*/
#ifdef DRV_DEF_C
	#error DRV_DEF_C has been defined
#endif

#ifdef DRV_DEF_M
	#error DRV_DEF_M has been defined
#endif

#ifdef DRV_DEF_D
	#error DRV_DEF_D has been defined
#endif

#ifdef DRV_DEF_F
	#error DRV_DEF_F has been defined
#endif

 /*Field Enum*/
#define CTC_FIELD_ENUM(RegName, FieldName) \
  RegName##_##FieldName##_f,

 /*DS Field Sepertor*/
#define CTC_DS_SEPERATOR_ENUM(RegName) \
  RegName##__f = -1,

 /*DS ENUM*/
#define CTC_DS_ENUM(RegName) \
   RegName##_t,

 /*DS TYPE*/
#define CTC_DS_TYPE(RegName, Word) \
  typedef struct {uint32 m[Word];} RegName##_m;


#define DRV_DEF_C(MaxInstNum, MaxEntry, MaxWord, MaxBits,MaxStartPos,MaxSegSize)


 /* Field Enum*/
#define DRV_DEF_M(ModuleName, InstNum)
#ifdef DRV_DS_LITE
#define DRV_DEF_D(RegName, Word, No)
#define DRV_DEF_F(RegName, FieldName, No)
#else
#define DRV_DEF_D(RegName, Word, No) \
        CTC_DS_SEPERATOR_ENUM(RegName)
#define DRV_DEF_F(RegName, FieldName, No) \
        CTC_FIELD_ENUM(RegName, FieldName)
#endif
#define DRV_DEF_SDK_D(RegName, Word, No)\
        CTC_DS_SEPERATOR_ENUM(RegName)
#define DRV_DEF_SDK_F(RegName, FieldName, No)\
        CTC_FIELD_ENUM(RegName, FieldName)
/*typedef enum fld_id_e {
#include "usw/include/drv_ds.h"
} fld_id_t;*/
typedef uint32 fld_id_t;
#include "usw/include/drv_field.h"
#undef DRV_DEF_M
#undef DRV_DEF_D
#undef DRV_DEF_F
#undef DRV_DEF_SDK_D
#undef DRV_DEF_SDK_F

 /* DS Enum*/
#define DRV_DEF_M(ModuleName, InstNum)
#ifdef DRV_DS_LITE
#define DRV_DEF_D(RegName, Word, No)
#else
#define DRV_DEF_D(RegName, Word, No) \
        CTC_DS_ENUM(RegName)
#endif
#define DRV_DEF_F(RegName, FieldName, No)
#define DRV_DEF_SDK_D(RegName, Word, No) \
        CTC_DS_ENUM(RegName)
#define DRV_DEF_SDK_F(RegName, FieldName, No)
/*typedef enum tbls_id_e {
#include "usw/include/drv_ds.h"
   MaxTblId_t
} tbls_id_t;*/
typedef uint32 tbls_id_t;
#include "usw/include/drv_tbl.h"
#undef DRV_DEF_M
#undef DRV_DEF_D
#undef DRV_DEF_F
#undef DRV_DEF_SDK_D
#undef DRV_DEF_SDK_F

 /* DS Type*/
#define DRV_DEF_M(ModuleName, InstNum)
#ifdef DRV_DS_LITE
#define DRV_DEF_D(RegName, Word, No)
#else
#define DRV_DEF_D(RegName, Word, No) \
        CTC_DS_TYPE(RegName, Word)
#endif
#define DRV_DEF_F(RegName, FieldName, No)
#define DRV_DEF_SDK_F(RegName, FieldName, No)
#define DRV_DEF_SDK_D(RegName, Word, No)\
        CTC_DS_TYPE(RegName, Word)
#include "usw/include/drv_ds.h"
#undef DRV_DEF_M
#undef DRV_DEF_D
#undef DRV_DEF_F
#undef DRV_DEF_SDK_D
#undef DRV_DEF_SDK_F


#undef DRV_DEF_C

#endif  /* __DRV_TYPE_H__*/
